namespace ext
{
	using System;
	using System.Runtime.CompilerServices;
	using System.Html;
	using System.Collections;
	
	
	/// <summary>
	/// History management component that allows you to register arbitrary tokens that signify application
	/// history state on navigation actions. You can then handle the history {@link #change} event in order
	/// to reset your application UI to the appropriate state when the user navigates forward or backward through
	/// the browser history stack.
	/// </summary>
	/// <definedin>src\util\History.js</definedin>
	[ScriptName("History")]
	[ScriptNamespace("Ext")]
	[Imported()]
	public partial class History : ext.util.Observable
	{
		
		#region Constructors
		/// <summary>Constructor</summary>
		internal History()
		{
		}
		#endregion
		
		#region Fields
		/// <summary>Fires when the Ext.History singleton has been initialized and is ready for use.</summary>
		/// <definedin>src\util\History.js</definedin>
		[ScriptName("readyEventName")]
		public const string ReadyEventName = "ready";
		
		/// <summary>Fires when navigation back or forwards within the local page&apos;s history occurs.</summary>
		/// <definedin>src\util\History.js</definedin>
		[ScriptName("changeEventName")]
		public const string ChangeEventName = "change";
		#endregion
		
		#region Methods
		/// <summary>
		/// Add a new token to the history stack. This can be any arbitrary value, although it would
		/// commonly be the concatenation of a component id and another id marking the specifc history
		/// state of that component. Example usage:
		/// 
		/// // Handle tab changes on a TabPanel
		/// tabPanel.on(&apos;tabchange&apos;, function(tabPanel, tab){
		/// Ext.History.add(tabPanel.id + &apos;:&apos; + tab.id);
		/// });
		/// </summary>
		/// <htmlSummary>
		/// Add a new token to the history stack. This can be any arbitrary value, although it would
		/// commonly be the concatenation of a component id and another id marking the specifc history
		/// state of that component. Example usage:
		/// &lt;pre&gt;&lt;code&gt;
		/// // Handle tab changes on a TabPanel
		/// tabPanel.on(&apos;tabchange&apos;, function(tabPanel, tab){
		/// Ext.History.add(tabPanel.id + &apos;:&apos; + tab.id);
		/// });
		/// &lt;/code&gt;&lt;/pre&gt;
		/// </htmlSummary>
		/// <definedin>src\util\History.js</definedin>
		/// <param name="token">The value that defines a particular application-specific history state</param>
		/// <param name="preventDuplicates">
		/// When true, if the passed token matches the current token
		/// it will not save a new history step. Set to false if the same state can be saved more than once
		/// at the same history stack location (defaults to true).
		/// </param>
		[ScriptName("add")]
		public void Add(string token, bool preventDuplicates)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Programmatically steps back one step in browser history (equivalent to the user pressing the Back button).</summary>
		/// <definedin>src\util\History.js</definedin>
		[ScriptName("back")]
		public void Back()
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Programmatically steps forward one step in browser history (equivalent to the user pressing the Forward button).</summary>
		/// <definedin>src\util\History.js</definedin>
		[ScriptName("forward")]
		public void Forward()
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Retrieves the currently-active history token.</summary>
		/// <definedin>src\util\History.js</definedin>
		/// <returns>The token</returns>
		[ScriptName("getToken")]
		public string GetToken()
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Initialize the global History instance.</summary>
		/// <definedin>src\util\History.js</definedin>
		/// <param name="onReady">
		/// A callback function that will be called once the history
		/// component is fully initialized.
		/// </param>
		/// <param name="scope">The scope (<c>this</c> reference) in which the callback is executed. Defaults to the browser window.</param>
		[ScriptName("init")]
		public void Init(bool onReady, object scope)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Initialize the global History instance.</summary>
		/// <definedin>src\util\History.js</definedin>
		/// <param name="onReady">
		/// A callback function that will be called once the history
		/// component is fully initialized.
		/// </param>
		[ScriptName("init")]
		public void Init(bool onReady)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Initialize the global History instance.</summary>
		/// <definedin>src\util\History.js</definedin>
		[ScriptName("init")]
		public void Init()
		{
			throw new System.Exception("Imported - not implemented");
		}
		#endregion
		
		#region Events
		/// <summary>Fires when the Ext.History singleton has been initialized and is ready for use.</summary>
		/// <definedin>src\util\History.js</definedin>
		[ScriptName("ready")]
		public static event ext.auto.Delegate_ext_History Ready;
		
		/// <summary>Fires when navigation back or forwards within the local page&apos;s history occurs.</summary>
		/// <definedin>src\util\History.js</definedin>
		[ScriptName("change")]
		public static event ext.auto.Delegate_System_String Change;
		#endregion
	}
}
